package vue.panneau2;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;

import javax.swing.*;

import vue.panneau2.controle.ControleActionPanneau2;
import vue.panneau2.controle.NouveauResultatPointListener;
import vue.panneau2.modele.ModelePanneau2;
import vue.panneau2.vue.PanneauRepresentation;

public class Zone2 extends JInternalFrame {
	private static final long serialVersionUID = 1L;
	private ModelePanneau2 modelePanneau2 = new ModelePanneau2();
	private List<NouveauResultatPointListener> listeDesListeners = new ArrayList<NouveauResultatPointListener> () ; 
	private ControleActionPanneau2 controleActionPanneau2 = new ControleActionPanneau2(this, modelePanneau2,listeDesListeners);
	private PanneauRepresentation panneaurepresentation = new PanneauRepresentation(modelePanneau2);
	private Box boutonBox = Box.createHorizontalBox();
	private JButton bPrecPrecedent = new JButton("<<");
	private JButton bPrecedent = new JButton("<");
	private JButton bSuivant = new JButton(">");
	private JButton bSuivSuivant = new JButton(">>");
	private JButton bResolution = new JButton("Lancer la résolution");
	private JLabel lNumEtapeCourante = new JLabel("Etape");
	private Color bleu = new Color(102,204,255);
	
	public Zone2() {
		super("Informations", 
	              true, //resizable
	              false, //closable
	              true, //maximizable
	              false);//iconifiable
		
		Dimension tailleEcran = getToolkit().getScreenSize();
		setSize(tailleEcran.width/2, tailleEcran.height/2);
		setLocation(tailleEcran.width/2, 0);
		
		setBackground(new Color(255,153,51));
		setLayout(new BorderLayout());
		
		bPrecPrecedent.setBackground(bleu);
		bPrecedent.setBackground(bleu);
		bSuivant.setBackground(bleu);
		bSuivSuivant.setBackground(bleu);
		bResolution.setBackground(bleu);

		bPrecPrecedent.addActionListener(controleActionPanneau2);
		bPrecedent.addActionListener(controleActionPanneau2);
		bSuivant.addActionListener(controleActionPanneau2);
		bSuivSuivant.addActionListener(controleActionPanneau2);
		bResolution.addActionListener(controleActionPanneau2);
		
		boutonBox.add(Box.createHorizontalStrut(3));
		boutonBox.add(bPrecPrecedent);
		boutonBox.add(Box.createHorizontalStrut(3));
		boutonBox.add(bPrecedent);
		boutonBox.add(Box.createHorizontalStrut(3));
		boutonBox.add(bSuivant);
		boutonBox.add(Box.createHorizontalStrut(3));
		boutonBox.add(bSuivSuivant);
		boutonBox.add(Box.createHorizontalStrut(30));
		boutonBox.add(bResolution);
		boutonBox.add(Box.createHorizontalStrut(30));
		boutonBox.add(lNumEtapeCourante);

		add(boutonBox, BorderLayout.NORTH);
		add(new JScrollPane(panneaurepresentation), BorderLayout.CENTER);
	}
	
	/**
	 * Permet d'obtenir une reference sur le modele du panneau 2.
	 * Ce dernier contient toutes les methodes necessaires a la resolution du Simplexe.
	 * @return Une reference vers le modele du panneau 2.
	 */
	public ModelePanneau2 getModele() {
		return modelePanneau2;
	}

	/**
	 * Permet de changer le numero de l'etape active courante.
	 * @param valeur Le numero de la nouvelle etape active courante.
	 */
	public void setLNumEtapeCourante(String valeur) {
		lNumEtapeCourante.setText(valeur);
	}
	
	/**
	 * Permet d'ajouter un nouvel ecouteur de l'evenement NouveauResultat.
	 * Ce dernier se produit lorsque l'utilisateur change d'etape dans son
	 * interface.
	 * @param listener Le nouvel ecouteur de l'evenement a enregistrer sur la liste des
	 * ecouteurs.
	 */
	public void addNouveauResultatPointListener(NouveauResultatPointListener listener) {
		this.listeDesListeners.add(listener) ;
	}	
}
